The need to store digital files, documents, pictures, images and other data continues to increase rapidly. In connection with the electronic storage of data, systems incorporating one or more data storage controllers have been devised. Storage controllers receive data read and write requests from host computers and control one or more physical storage devices to beneficially store or provide the requested data from/to the host computers.
Storage controllers generally buffer read and write data requests, often converting the host data read and write requests into RAID or storage device read or write requests. Many storage controllers store read and write data in cache memories included as part of the storage controllers. Cache memories are small compared to external storage devices such as hard drives, and generally orders of magnitude faster. However, cache memory costs significantly more per byte than storage devices, and therefore cache memory size is correspondingly small in order to be cost effective. The need is always present for cache memories to operate as efficiently as possible in order for overall storage controller performance to be maximized to all interconnected host computers.
Host computers interact with data storage systems by providing either random or sequential I/O requests. In the case of sequential I/O requests, it is desirable for storage controllers to handle as many different sequential I/O streams as possible in order to maximize performance. Sequential I/O streams include a series of generally consecutive I/O requests directed to the same storage device, logical volume, or VDisk. While some sequential I/O streams may be read requests, other sequential I/O streams may be write requests.